<?php

/*
  | --------------------------------------------------------------------------------------------------
  | <agenda>
  |
  | Desenvolvedor:	Eduardo Sirangelo
  | E-mail:		sirangelos@ibest.com.br
  | Descrição:
  |	-
  | Quality is Everyting
  | --------------------------------------------------------------------------------------------------
 */
class Agenda extends Controller {

    function Agenda() {

        parent::Controller();
        
        if($this->session->userdata('is_logged_in') != 1) {
            echo "<script type='text/javascript'>window.close()</script>";
        }
        
        $this->load->model('agenda_model');
        
    }
    
    /**
     * =========================================================================
     * AGENDA MENSAL
     * =========================================================================
     */
    
    function agenda_mensal() {
        
        $data['titulo'] = "HAIR 1.0 - Agenda Mensal";
        
        $this->load->view('header_pop_up_view',$data);
        $this->load->view('/agenda/agenda_mensal_view');
        $this->load->view('footer_pop_up_view');
        
    }
    
    function get_agenda_mensal_by_date() {
        
        $date = $_POST['data'];
        
        $array          = array();
        $array_datas    = $this->functions->geraArrayDatasByMes($date);
        
        foreach($array_datas as $key => $data_completa) {
            
            $content      = array();
            $class01      = "";
            
            if($this->functions->verificaExpedienteByDate($data_completa) == 0) {
                $class01 .= "other-month ";
            }
            
            if($this->functions->testaMes($data_completa,$date) == "true") {
                
                $class01 .= "";
                if($this->functions->verifyDatePassNow($data_completa) == "valid") {
                    $link00  = ''; 
                } else {
                    $link00  = ''; 
                }
                $link01  = '<a href="#mostraAgenda()" class="with-tip day open_agenda_diaria" title="Acesse a agenda completa para este dia" id="id_show_' . str_replace("-", "_", $data_completa) . '" label="' . $data_completa . '">' . $this->functions->data_extenso(8,$data_completa) . '</a>';
                
            } else {
                
                $class01 .= "unavailable";
                $link00   = "";
                $link01   = '<a href="#" class="with-tip day">' . $this->functions->data_extenso(8,$data_completa) . '</a>';
                
            }
            
            $db_start = $data_completa . " 00:00:01";
            $db_end   = date("Y-m-d H:i:s",strtotime("+24hours 59 minutes 59 seconds",strtotime($db_start)));
            $query = $this->agenda_model->get_servicos_agendados_by_dia($db_start,$db_end,$this->session->userdata('id_empresa'));
            $j                   = 0;
            $count_total_eventos = 0;
            $count_extra_events  = 0;
            
            if($query->num_rows() > 0) {
                
                foreach ($query->result() as $row) {
                    
                    if($j < 3) {
                        $content['lista_eventos'][$j]         = "<li><a href='#' label='" . $row->id_servico . "' class='agenda_mensal'>" . $row->servico . ": " . $row->total . "</a></li>";
                    } else {
                        $content['lista_eventos_full'][$j]    = "<li><a href='#' label='" . $row->id_servico . "'>" . $row->servico . ": " . $row->total . "</a></li>";
                        $count_extra_events++;
                    }
                    
                    $j++;
                    $count_total_eventos++;
                }
                
                $content['total_eventos']   = $count_total_eventos;
                $content['extra_eventos']   = $count_extra_events;
            }
            								
            $array[] = array("dt_full" => $data_completa,"link_add" => $link01,"class_line" => $class01,"link_show" => $link00,"content" => $content);
        }
        
        $data['array_data'] = $array;
        
        $this->load->view('/agenda/corpo_agenda_mensal_view',$data);
        
    }
    
    function new_dates() {
        
        list($ano,$mes) = explode("-", $_POST['data']);
        $date   = "01/" . $mes . "/" . $ano;
        $date2  = $ano . "-" . $mes . "-01";
        $result = array(
            "data_anterior" => $this->functions->data_extenso(7,($this->functions->addDaysToDate('-30',$date))),
            "data_anterior_ext" => $this->functions->data_extenso(6,($this->functions->addDaysToDate('-30',$date))),
            "data_atual" => $this->functions->data_extenso(7,$date2),
            "data_atual_ext" => $this->functions->data_extenso(6,$date2),
            "data_posterior" => $this->functions->data_extenso(7,($this->functions->addDaysToDate('31',$date))),
            "data_posterior_ext" => $this->functions->data_extenso(6,($this->functions->addDaysToDate('31',$date)))
        );
        
        echo json_encode($result);
    }
    
    function add_agendamento_by_mes() {
        
        $this->load->model("cadastros_model");
        
        $array_servicos  = array();
        
        $where0  = array("id_empresa" => $this->session->userdata('id_empresa'));
        $query0  = $this->cadastros_model->get_servicos_by_where($where0);    
        foreach($query0->result() as $row0) {
            $array_servicos[$row0->id_servico] = $row0->servico;
        }
        
        $data['array_servicos']     = $array_servicos;
        
        $this->load->view('/agenda/form_agendamento_by_mes_view',$data);
        
    }
    
    function insert_agendamento_mensal() {
        
        $this->load->model("cadastros_model");
        
        $i = 0;
        
        if(isset ($_POST['dt_inicio_agendamento']) && !empty ($_POST['dt_inicio_agendamento'])) {
            $dt_inicio_agendamento              = $this->functions->formataDataStampBr($_POST['dt_inicio_agendamento'],"timestamp");
        }
        
        if(isset ($_POST['dt_fim_agendamento']) && !empty ($_POST['dt_fim_agendamento'])) {
            $dt_fim_agendamento                 = $this->functions->formataDataStampBr($_POST['dt_fim_agendamento'],"timestamp");
        }
        
        if($this->functions->verifyDatePassNow($dt_inicio_agendamento) == "valid" && $this->functions->verifyDatePassNow($dt_fim_agendamento) == "valid") {
            
            $data[$i]["dt_inicio_agendamento"]  = $this->functions->formataDataStampBr($_POST['dt_inicio_agendamento'],"timestamp");
            $data[$i]["dt_fim_agendamento"]    = $this->functions->formataDataStampBr($_POST['dt_fim_agendamento'],"timestamp");
            
            if(isset ($_POST['id_cliente']) && !empty ($_POST['id_cliente'])) {
                $data[$i]["id_cliente"]      = $_POST['id_cliente'];
            }

            if(isset ($_POST['nome_cliente']) && !empty ($_POST['nome_cliente'])) {
                $data[$i]["nm_cliente"]      = $_POST['nome_cliente'];
            }            

            if(isset ($_POST['id_profissional']) && !empty ($_POST['id_profissional'])) {
                $data[$i]["id_profissional"] = $_POST['id_profissional'];
            }

            if(isset ($_POST['id_servico']) && !empty ($_POST['id_servico'])) {
                $data[$i]["id_servico"]     = $_POST['id_servico'];
            }

            $data[$i]['id_empresa']         = $this->session->userdata('id_empresa');

            $result = $this->agenda_model->insert_agendamento($data);

            if($result > 0) {
                
                if($this->functions->verificaExpedienteByDate($_POST['dt_inicio_agendamento'])) {
                    $return = array("retorno" => "sucess","content" => "<p>Agendamento realizado com sucesso</p>","url" => "javascript:document.location.reload(true)");
                } else {
                    $return = array("retorno" => "sucess","content" => "<p>Agendamento realizado com sucesso.</p><p style='color:red;font-weight: bold'>OBS: O agendamento foi feito para um dia onde não há expediente comum no salão.","url" => "javascript:document.location.reload(true)");
                }
                
            } else {
                $return = array("retorno" => "error","content" => "<p>Por algum motivo o agendamento não foi realizado. Verifique!","url" => "#close");
            }
            
        } else {
            
            $return = array("retorno" => "error","content" => "<p>Agendamentos não podem ser feitos para datas passadas. Verifique!","url" => "#close");
            
        }
        
        
        echo json_encode($return);
    }
    
    /**
     * =========================================================================
     * AGENDA POR PROFISSIONAL
     * =========================================================================
     */
    
    function agenda_by_profissional($id_profissional) {
        
        $this->load->model("cadastros_model");
        
        $where = array("id_profissional" => $id_profissional,"id_empresa" => $this->session->userdata('id_empresa'));
        $query = $this->cadastros_model->get_profissionais_by_where($where);
        $row   = $query->row();
        
        $data['titulo']             = "HAIR 1.0 - Profissional: $row->nome_profissional";
        $data['nm_profissional']    = $row->nome_profissional;
        $data['id_profissional']    = $id_profissional;
        
        $this->load->view('header_pop_up_view',$data);
        $this->load->view('/agenda/agenda_profissional_view');
        $this->load->view('footer_pop_up_view');
        
    }
    
    function get_corpo_agenda_profissional() {
        
        list($data_inicio_semana,$data_final_semana) = explode(";",$_POST['data']);
        
        $id_profissional    = $_POST['id_profissional']        ;
        
        $intervalo          = $this->functions->ler_parametro(1);
        $inicio_agendamento = $this->functions->ler_parametro(2);
        $final_agendamento  = $this->functions->ler_parametro(3);
        
        $date   = date("Y-m-d");
        $start  = strtotime($date . " " . $inicio_agendamento); 
        $end    = strtotime($date . " " . $final_agendamento); 
        $date   = $start; 
        
        $array_data_hora = array();
        
        while($date <= $end) { 
           $array_data_hora[] = date("Y-m-d H:i:s",$date);
           $date = strtotime("+$intervalo minutes", $date);
        }
        
        $array_dias_semana      = array(
            "0" => array(
                "dia" => "Domingo (" . $this->functions->data_extenso(11,$this->functions->addDaysToDate(0,$data_inicio_semana)) . ")",
                "class" => "day1",
                "data" => $this->functions->addDaysToDate(0,$data_inicio_semana),
                "list" => $this->_returnAgendaByProfAndDate($this->functions->addDaysToDate(0,$data_inicio_semana), $id_profissional)
            ),
            "1" => array(
                "dia" => "Segunda (" . $this->functions->data_extenso(11,$this->functions->addDaysToDate(1,$data_inicio_semana)) . ")",
                "class" => "day2",
                "data" => $this->functions->addDaysToDate(1,$data_inicio_semana),
                "list" => $this->_returnAgendaByProfAndDate($this->functions->addDaysToDate(1,$data_inicio_semana), $id_profissional)
            ),
            "2" => array(
                "dia" => "Terça (" . $this->functions->data_extenso(11,$this->functions->addDaysToDate(2,$data_inicio_semana)) . ")",
                "class" => "day3",
                "data" => $this->functions->addDaysToDate(2,$data_inicio_semana),
                "list" => $this->_returnAgendaByProfAndDate($this->functions->addDaysToDate(2,$data_inicio_semana), $id_profissional)
            ),
            "3" => array(
                "dia" => "Quarta (" . $this->functions->data_extenso(11,$this->functions->addDaysToDate(3,$data_inicio_semana)) . ")",
                "class" => "day4",
                "data" => $this->functions->addDaysToDate(3,$data_inicio_semana),
                "list" => $this->_returnAgendaByProfAndDate($this->functions->addDaysToDate(3,$data_inicio_semana), $id_profissional)
            ),
            "4" => array(
                "dia" => "Quinta (" . $this->functions->data_extenso(11,$this->functions->addDaysToDate(4,$data_inicio_semana)) . ")",
                "class" => "day5",
                "data" => $this->functions->addDaysToDate(4,$data_inicio_semana),
                "list" => $this->_returnAgendaByProfAndDate($this->functions->addDaysToDate(4,$data_inicio_semana), $id_profissional)
            ),
            "5" => array(
                "dia" => "Sexta (" . $this->functions->data_extenso(11,$this->functions->addDaysToDate(5,$data_inicio_semana)) . ")",
                "class" => "day6",
                "data" => $this->functions->addDaysToDate(5,$data_inicio_semana),
                "list" => $this->_returnAgendaByProfAndDate($this->functions->addDaysToDate(5,$data_inicio_semana), $id_profissional)
            ),
            "6" => array(
                "dia" => "Sábado (" . $this->functions->data_extenso(11,$this->functions->addDaysToDate(6,$data_inicio_semana)) . ")",
                "class" => "day7",
                "data" => $this->functions->addDaysToDate(6,$data_inicio_semana),
                "list" => $this->_returnAgendaByProfAndDate($this->functions->addDaysToDate(6,$data_inicio_semana), $id_profissional)
            )
        );
        
        $array_dias_sem_expediente = explode(";", $this->functions->ler_parametro(4));
        foreach($array_dias_sem_expediente as $dias) {
            $array_dias_semana[$dias]['class'] = $array_dias_semana[$dias]['class'] . " weekend";
        }
        
        $data['array_horarios'] = $array_data_hora;
        $data['array_dias']     = $array_dias_semana;
        
        $this->load->view('/agenda/corpo_agenda_by_profissional_view',$data);
        
    }
    
    function new_dates_by_profissional() {
        
        
        list($dt_ini,$dt_fim) = explode(";",$_POST['data']);        
        list($dia,$mes,$ano) = explode("/",$dt_ini);
        $date = $ano . "-" . $mes . "-" . $dia;
        
        $result = array(
            "data_anterior" => $this->functions->data_extenso(10,($this->functions->addDaysToDate('-6',$dt_ini))),
            "data_anterior_ext" => $this->functions->data_extenso(9,($this->functions->addDaysToDate('-6',$dt_ini))),
            "data_atual" => $this->functions->data_extenso(10,$date),
            "data_atual_ext" => $this->functions->data_extenso(9,$date),
            "data_posterior" => $this->functions->data_extenso(10,($this->functions->addDaysToDate('8',$dt_ini))),
            "data_posterior_ext" => $this->functions->data_extenso(9,($this->functions->addDaysToDate('8',$dt_ini)))
        );
        
        echo json_encode($result);
    }
    
    function add_agendamento_by_profissional() {
        
        $tp_form            = $_POST['tp_form'];
        
        if($tp_form == "new") {
            $id_profissional    = $_POST['id'];
            $this->_new_agendamento($id_profissional);
        } elseif($tp_form == "edit") {
            $id_agendamento     = $_POST['id'];
            $this->_edit_agendamento($id_agendamento);
        }
    
    }
    
    function insert_agendamento_by_profissional() {
        
        $this->load->model("cadastros_model");
        
        $i = 0;
        
        if(isset ($_POST['dt_inicio_agendamento']) && !empty ($_POST['dt_inicio_agendamento'])) {
            $dt_inicio_agendamento              = $this->functions->formataDataStampBr($_POST['dt_inicio_agendamento'],"timestamp");
        }
        
        if(isset ($_POST['dt_fim_agendamento']) && !empty ($_POST['dt_fim_agendamento'])) {
            $dt_fim_agendamento                 = $this->functions->formataDataStampBr($_POST['dt_fim_agendamento'],"timestamp");
        }
        
        if($this->functions->verifyDatePassNow($dt_inicio_agendamento) == "valid" && $this->functions->verifyDatePassNow($dt_fim_agendamento) == "valid") {
            
            $data[$i]["dt_inicio_agendamento"]  = $this->functions->formataDataStampBr($_POST['dt_inicio_agendamento'],"timestamp");
            $data[$i]["dt_fim_agendamento"]    = $this->functions->formataDataStampBr($_POST['dt_fim_agendamento'],"timestamp");
            
            if(isset ($_POST['id_cliente']) && !empty ($_POST['id_cliente'])) {
                $data[$i]["id_cliente"]      = $_POST['id_cliente'];
            }

            if(isset ($_POST['nome_cliente']) && !empty ($_POST['nome_cliente'])) {
                $data[$i]["nm_cliente"]      = $_POST['nome_cliente'];
            }            

            if(isset ($_POST['id_profissional']) && !empty ($_POST['id_profissional'])) {
                $data[$i]["id_profissional"] = $_POST['id_profissional'];
            }

            if(isset ($_POST['id_servico']) && !empty ($_POST['id_servico'])) {
                $data[$i]["id_servico"]     = $_POST['id_servico'];
            }

            $data[$i]['id_empresa']         = $this->session->userdata('id_empresa');

            $result = $this->agenda_model->insert_agendamento($data);

            if($result > 0) {
                
                if($this->functions->verificaExpedienteByDate($_POST['dt_inicio_agendamento'])) {
                    $return = array("retorno" => "sucess","content" => "<p>Agendamento realizado com sucesso</p>","url" => "javascript:document.location.reload(true)");
                } else {
                    $return = array("retorno" => "sucess","content" => "<p>Agendamento realizado com sucesso.</p><p style='color:red;font-weight: bold'>OBS: O agendamento foi feito para um dia onde não há expediente comum no salão.","url" => "javascript:document.location.reload(true)");
                }
                
            } else {
                $return = array("retorno" => "error","content" => "<p>Por algum motivo o agendamento não foi realizado. Verifique!","url" => "#close");
            }
            
        } else {
            
            $return = array("retorno" => "error","content" => "<p>Agendamentos não podem ser feitos para datas passadas. Verifique!","url" => "#close");
            
        }
        
        
        echo json_encode($return);
    }
    
    function edit_agendamento_by_profissional() {
        
        $this->load->model("cadastros_model");
        
        $i = 0;
        
        $id_agendamento                         = $_POST['id_agendamento'];
        
        if(isset ($_POST['dt_inicio_agendamento']) && !empty ($_POST['dt_inicio_agendamento'])) {
            $dt_inicio_agendamento              = $this->functions->formataDataStampBr($_POST['dt_inicio_agendamento'],"timestamp");
        }
        
        if(isset ($_POST['dt_fim_agendamento']) && !empty ($_POST['dt_fim_agendamento'])) {
            $dt_fim_agendamento                 = $this->functions->formataDataStampBr($_POST['dt_fim_agendamento'],"timestamp");
        }
        
        if($this->functions->verifyDatePassNow($dt_inicio_agendamento) == "valid" && $this->functions->verifyDatePassNow($dt_fim_agendamento) == "valid") {
            
            $data[$i]["dt_inicio_agendamento"]  = $this->functions->formataDataStampBr($_POST['dt_inicio_agendamento'],"timestamp");
            $data[$i]["dt_fim_agendamento"]    = $this->functions->formataDataStampBr($_POST['dt_fim_agendamento'],"timestamp");
            
            if(isset ($_POST['id_cliente']) && !empty ($_POST['id_cliente'])) {
                $data[$i]["id_cliente"]      = $_POST['id_cliente'];
            }

            if(isset ($_POST['nome_cliente']) && !empty ($_POST['nome_cliente'])) {
                $data[$i]["nm_cliente"]      = $_POST['nome_cliente'];
            }            

            if(isset ($_POST['id_profissional']) && !empty ($_POST['id_profissional'])) {
                $data[$i]["id_profissional"] = $_POST['id_profissional'];
            }

            if(isset ($_POST['id_servico']) && !empty ($_POST['id_servico'])) {
                $data[$i]["id_servico"]     = $_POST['id_servico'];
            }

            $data[$i]['id_empresa']         = $this->session->userdata('id_empresa');

            $where  = array("id_agendamento" => $id_agendamento,"id_empresa" => $this->session->userdata('id_empresa'));
            $result = $this->agenda_model->update_agendamento($data,$where);
            
            if($result > 0) {
                
                if($this->functions->verificaExpedienteByDate($_POST['dt_inicio_agendamento'])) {
                    $return = array("retorno" => "sucess","content" => "<p>Agendamento editado com sucesso.</p>","url" => "javascript:document.location.reload(true)");
                } else {
                    $return = array("retorno" => "sucess","content" => "<p>Agendamento editado com sucesso.</p><p style='color:red;font-weight: bold'>OBS: O agendamento foi feito para um dia onde não há expediente comum no salão.","url" => "javascript:document.location.reload(true)");
                }
                
            } else {
                $return = array("retorno" => "error","content" => "<p>Por algum motivo o agendamento não foi editado. <BR/>Verifique!","url" => "#close");
            }
            
        } else {
            
            $return = array("retorno" => "error","content" => "<p>Agendamentos não podem ser feitos para datas passadas. Verifique!","url" => "#close");
            
        }
        
        echo json_encode($return);
    }
    
    function delete_agendamento() {
        
        $id_agendamento = $_POST['id_agendamento'];
        
        $where = array("id_agendamento" => $id_agendamento,"id_empresa" => $this->session->userdata('id_empresa'));
        
        $result = $this->agenda_model->delete_agendamento($where);
        
        if($result > 0) {
            $return = array("retorno" => "sucess","content" => "<p>Agendamento deletado com sucesso</p>","url" => "javascript:document.location.reload(true)");
        } else {
            $return = array("retorno" => "error","content" => "<p>Por algum motivo o agendamento não foi deletado. <BR/>Verifique!","url" => "#close");
        }
        echo json_encode($return);
        
    }
    
    function visualizar_agendamento_by_profissional() {
        
        $id_agendamento = $_POST['id_agendamento'];
        
        $where  = array("id_agendamento" => $id_agendamento,"id_empresa" => $this->session->userdata('id_empresa'));
        $query  = $this->agenda_model->get_agendamento_by_where($where);
        $row    = $query->row();
        
        $content  = '<div class="columns">';
        $content .= '<p class="columns">';
        $content .= '<b>Profissional</b><BR/> ' . $this->agenda_model->return_profissional_by_id($row->id_profissional,20);
        $content .= '</p>';
        $content .= '<div class="columns">';
        $content .= '<p class="colx2-left">';
        $content .= '<b>Data / Hora Inicio</b><BR/> ' . $this->functions->formataDataStampBr($row->dt_inicio_agendamento,"br");
        $content .= '</p>';
        $content .= '<p class="colx2-right">';
        $content .= '<b>Data / Hora Fim</b><BR/> ' . $this->functions->formataDataStampBr($row->dt_fim_agendamento,"br");
        $content .= '</p>';
        $content .= '</div>';
        $content .= '<p class="columns">';
        $content .= '<b>Cliente</b><BR/> ' . $row->nm_cliente;
        $content .= '</p>';
        $content .= '<p class="columns">';
        $content .= '<b>Serviço</b><BR/> ' . $this->agenda_model->return_servico_by_id($row->id_servico,$this->session->userdata('id_empresa'));
        $content .= '</p>';
        $content .= '</div>';
        
        $return = array("content" => $content,"titulo" => "Visualização de agendamento");
        
        echo json_encode($return);
    }
    
    private function _new_agendamento($id_profissional) {
        
        $this->load->model("cadastros_model");
        
        $array_servicos  = array();
        
        $where  = array("id_profissional" => $id_profissional,"id_empresa" => $this->session->userdata('id_empresa'));
        $query  = $this->agenda_model->get_profissional_especialidade($where);
        foreach($query->result() as $row) {
            $where0  = array("id_especialidade" => $row->id_especialidade,"id_empresa" => $this->session->userdata('id_empresa'));
            $query0  = $this->cadastros_model->get_servicos_by_where($where0);    
            foreach($query0->result() as $row0) {
                $array_servicos[$row0->id_servico] = $row0->servico;
            }
        }
        
        $data['id_profissional']    = $id_profissional;
        $data['array_servicos']     = $array_servicos;
        
        $this->load->view('/agenda/form_new_agendamento_by_prof_view',$data);
        
    }
    
    private function _edit_agendamento($id_agendamento) {
        
        $this->load->model("cadastros_model");
        
        $array_servicos  = array();
        
        $where  = array("id_agendamento" => $id_agendamento,"id_empresa" => $this->session->userdata('id_empresa'));
        $query  = $this->agenda_model->get_agendamento_by_where($where);
        $row    = $query->row();
        
        $where0  = array("id_profissional" => $row->id_profissional,"id_empresa" => $this->session->userdata('id_empresa'));
        $query0  = $this->agenda_model->get_profissional_especialidade($where0);
        foreach($query0->result() as $row0) {
            $where1  = array("id_especialidade" => $row0->id_especialidade,"id_empresa" => $this->session->userdata('id_empresa'));
            $query1  = $this->cadastros_model->get_servicos_by_where($where1);    
            foreach($query1->result() as $row1) {
                $array_servicos[$row1->id_servico] = $row1->servico;
            }
        }
                
        $data['row']                = $row; 
        $data['array_servicos']     = $array_servicos;
        
        $this->load->view('/agenda/form_edit_agendamento_by_prof_view',$data);
        
    }
    
    private function _returnAgendaByProfAndDate($data,$id_profissional) {
        
        $where  = "id_profissional = " . $id_profissional . " AND id_empresa = " . $this->session->userdata('id_empresa') . " AND CAST(dt_inicio_agendamento AS varchar) LIKE '" . $data . "%'";
        $query  = $this->agenda_model->get_agendamento_by_where($where);
        
        $list   = "";
        $count  = 0;
        if($query->num_rows() > 0) {
            
            foreach($query->result() as $row) {
                
                if($this->functions->verifyDatePassNow($this->functions->formataDataStampBr($row->dt_inicio_agendamento,"br2")) == "valid") {
                    
                    if(($count%2) == 0) {
                        $class = " purple";
                    } else {
                        $class = " blue";
                    }

                    $list .= '<li class="' . $this->functions->retornaClasseAgenda($row->dt_inicio_agendamento,$row->dt_fim_agendamento) . $class . '">';
                    $list .= '<ul class="mini-menu">';
                    $list .= '<li><a href="#visualizarAgendamento()" title="Visualizar este agendamento" id="' . $row->id_agendamento . '" class="visualizar_agendamento"><img src="' . base_url() . 'public/images/icons/fugue/pin-small.png" width="16" height="16"></a></li>';
                    $list .= '<li><a href="#editAgendamento()" title="Editar" label="'. $this->agenda_model->return_profissional_by_id($row->id_profissional,10) .'" id="' . $row->id_agendamento . '" class="edit_agendamento"><img src="' . base_url() . 'public/images/icons/fugue/pencil.png" width="16" height="16"></a></li>';
                    $list .= '<li><a href="#deleteAgendamento()" title="Deletar" id="' . $row->id_agendamento . '" class="delete_agendamento"><img src="' . base_url() . 'public/images/icons/fugue/cross-circle.png" width="16" height="16"></a></li>';
                    $list .= '</ul>';
                    $list .= '<span class="event-time">'. $this->functions->returnHoraMinuto($row->dt_inicio_agendamento) . ' - '. $this->functions->returnHoraMinuto($row->dt_fim_agendamento) . '</span>';
                    $list .= word_limiter($row->nm_cliente . "<BR/><i>" . $this->agenda_model->return_servico_by_id($row->id_servico,$this->session->userdata('id_empresa')) . "</i>",3);
                    $list .= '</li>';

                    $count++;
                    
                } elseif($this->functions->verifyDatePassNow($this->functions->formataDataStampBr($row->dt_inicio_agendamento,"br2")) == "invalid") {
                    
                    $list .= '<li class="' . $this->functions->retornaClasseAgenda($row->dt_inicio_agendamento,$row->dt_fim_agendamento) . ' green">';
                    $list .= '<ul class="mini-menu">';
                    $list .= '<li><a href="#visualizarAgendamento()" title="Visualizar este agendamento" id="' . $row->id_agendamento . '" class="visualizar_agendamento"><img src="' . base_url() . 'public/images/icons/fugue/pin-small.png" width="16" height="16"></a></li>';
                    $list .= '</ul>';
                    $list .= '<span class="event-time">'. $this->functions->returnHoraMinuto($row->dt_inicio_agendamento) . ' - '. $this->functions->returnHoraMinuto($row->dt_fim_agendamento) . '</span>';
                    $list .= word_limiter($row->nm_cliente . "<BR/><i>" . $this->agenda_model->return_servico_by_id($row->id_servico,$this->session->userdata('id_empresa')) . "</i>",3);
                    $list .= '</li>';
                    
                }
                
            }
            
        }
        
        return $list;
        
    }
    
    /**
     * =========================================================================
     * AGENDA DIARIA
     * =========================================================================
     */
    
    function agenda_diaria($date) {
        
        $data['titulo']             = "HAIR 1.0 - Agenda Diária";
        $data['data']               = $date;
        
        $intervalo          = $this->functions->ler_parametro(1);
        $inicio_agendamento = $this->functions->ler_parametro(2);
        $final_agendamento  = $this->functions->ler_parametro(3);
        
        
        $start  = strtotime($date . " " . $inicio_agendamento); 
        $end    = strtotime($date . " " . $final_agendamento); 
        $date   = $start;  
        
        $array_data_hora = array();
        
        while($date <= $end) { 
           $array_data_hora[] = date("Y-m-d H:i:s",$date);
           $date = strtotime("+$intervalo minutes", $date);
        }
        
        $array_agendamento  = array();
        $count_total_eventos= 0;
        $i = 0;
        foreach($array_data_hora as $key => $data_start) {
            //Data hora
            $array_agendamento[$i]['data_hora'] = $data_start;
            //Busca eventos
            $db_start = $data_start;
            $db_end   = date("Y-m-d H:i:s",strtotime("+59 minutes 59 seconds",strtotime($db_start)));
            $query = $this->agenda_model->get_agendamentos_by_day($db_start,$db_end,$this->session->userdata('id_empresa'));
            $j                  = 0;
            $count_extra_events = 0;
            
            if($query->num_rows() > 0) {
                
                $array_agendamento[$i]['classe01']              = "empty";
                foreach ($query->result() as $row) {
                    
                    if($j < 3) {
                        $array_agendamento[$i]['lista_eventos'][$j]         = "<a href='#' label='" . $row->id_profissional . "'><b>" . $this->agenda_model->return_horario_servico_by_id($row->id_servico,$db_start) . " (" . $this->agenda_model->return_profissional_by_id($row->id_profissional,1) . ")</b> " . $row->nm_cliente . "<span class='float-right with-tip delete_agendamento' label='" . $row->id_agendamento . "' title='Deletar agendamento'><img src='" . base_url() . "public/images/icons/fugue/delete-24.png' width='16' height='16'></span></a>";
                    } else {
                        $array_agendamento[$i]['lista_eventos_full'][$j]    = "<a href='#' label='" . $row->id_profissional . "'><b>" . $this->agenda_model->return_horario_servico_by_id($row->id_servico,$db_start) . " (" . $this->agenda_model->return_profissional_by_id($row->id_profissional,1) . ")</b> " . $row->nm_cliente . "</a>";
                        $count_extra_events++;
                    }
                    
                    $j++;
                    $count_total_eventos++;
                }
                
            } else {
                
                $array_agendamento[$i]['classe01'][0]              = "";
                $array_agendamento[$i]['lista_eventos'][0]         = "Horário livre";
                $array_agendamento[$i]['lista_eventos_full'][0]    = "";
            }
            
            if($count_extra_events > 0) {
                $array_agendamento[$i]['num_eventos']   = $count_extra_events;
            } else {
                $array_agendamento[$i]['num_eventos']   = 0;
            }
            $i++;
            
        }
        
        $data['total_eventos']     = $count_total_eventos;
        $data['array_agendamento'] = $array_agendamento;
        
        $this->load->view('header_pop_up_view',$data);
        $this->load->view('/agenda/agenda_diaria_view');
        $this->load->view('footer_pop_up_view');
        
    }
    
    /**
     * =========================================================================
     * FUNÇÕES COMUNS
     * =========================================================================
     */
    
    function get_cliente_id() {
        
        parse_str($_SERVER['QUERY_STRING'], $_GET);
        
        $q=strtolower ($_GET["q"]);
        
        $query = $this->agenda_model->get_cliente_by_id($q,$this->session->userdata('id_empresa'));
        
        if($query->num_rows() > 0) {
        
            foreach ($query->result() as $row) {
                echo $row->id_cliente . "\n";
            }
            
        } else {
            
            echo "Sem registros";
            
        }
        
    }
    
    /**
     * AUTOCOMPLETA DO CLIENTE COM PARTE DO NOME
     */
    
    function get_cliente_nome() {
        
        parse_str($_SERVER['QUERY_STRING'], $_GET);
        
        $q=strtolower ($_GET["q"]);
        
        $query = $this->agenda_model->get_cliente_by_name($q,$this->session->userdata('id_empresa'));
        if($query->num_rows() > 0) {
            
            foreach ($query->result() as $row) {
                echo $row->nome_cliente_nome_fantasia . "\n";
            }
            
        } else {
            
            echo "Sem registros";
            
        }
    }
    
    /**
     * SELECIONA CLIENTE
     */
    
    function get_cliente() {
        
        parse_str($_SERVER['QUERY_STRING'], $_GET);
        
        $tipo       = $_GET['tipo'];
        $cliente    = $_GET['cliente'];
        
        if($tipo == "id") {
            $query = $this->agenda_model->set_cliente("id_cliente",$cliente);
        } elseif($tipo == "nm") {
            $query  = $this->agenda_model->set_cliente("nome_cliente",$cliente);
        }
        
        if($query->num_rows() > 0) {
            
            $row   = $query->row();
            
            $result = array(
                "id_cliente" => $row->id_cliente,
                "nome_cliente" => $row->nome_cliente
            );
            
        }
        
        echo json_encode($result);
        
    }
    
    function get_profissional_by_servico() {
        
        $this->load->model("cadastros_model");
        
        $id_servico             = $_POST['id_servico'];
        $dt_inicio_agendamento  = $this->functions->formataDataStampBr($_POST['dt_inicio_agendamento'],"timestamp");
        $dt_fim_agendamento     = $this->functions->formataDataStampBr($_POST['dt_fim_agendamento'],"timestamp");
        
        $array_prof = array();
        
        $where  = array("id_servico" => $id_servico,"id_empresa" => $this->session->userdata('id_empresa'));
        $query  = $this->cadastros_model->get_servicos_by_where($where);    
        $row    = $query->row();
        
        $where0 = array("id_especialidade" => $row->id_especialidade,"id_empresa" => $this->session->userdata('id_empresa'));
        $query0 = $this->agenda_model->get_profissional_especialidade($where0);
        
        foreach($query0->result() as $row0) {
            
            $where2 = "id_profissional = $row0->id_profissional AND dt_inicio_agendamento BETWEEN '" . $dt_inicio_agendamento . "' AND '" . $dt_fim_agendamento . "' AND id_empresa = " . $this->session->userdata('id_empresa');
            $query2 = $this->agenda_model->check_agendamento_by_where($where2);
            if($query2->num_rows() == 0) {
                $where3 = array("id_profissional" => $row0->id_profissional,"id_empresa" => $this->session->userdata('id_empresa'));
                $query3 = $this->cadastros_model->get_profissionais_by_where($where3);
                $row3   = $query3->row();
                $array_prof[$row3->id_profissional] = $row3->nome_profissional;
            }
            
        }
        
        $return = array("profissionais" => $array_prof);
        
        echo json_encode($return);
        
    }
    
    function verifica_agenda_by_profissional() {
        
        $this->load->model("cadastros_model");
        
        $dt_inicio_agendamento  = $this->functions->formataDataStampBr($_POST['dt_inicio_agendamento'],"timestamp");
        $dt_fim_agendamento     = $this->functions->formataDataStampBr($_POST['dt_fim_agendamento'],"timestamp");
        $id_profissional        = $_POST['id_profissional'];
        
        $array_agendamentos = array();
        
        $where2 = "id_profissional = $id_profissional AND dt_inicio_agendamento BETWEEN '" . $dt_inicio_agendamento . "' AND '" . $dt_fim_agendamento . "' AND id_empresa = " . $this->session->userdata('id_empresa');
        $query2 = $this->agenda_model->check_agendamento_by_where($where2);
        if($query2->num_rows() > 0) {
            
            $free = "n";
            $content = "<p>Para este profissional existem horários reservados na data / hora:";
            foreach($query2->result() as $row2) {
                $content .= "<li>" . $this->functions->returnHoraMinuto($row2->dt_inicio_agendamento) . " às " . $this->functions->returnHoraMinuto($row2->dt_fim_agendamento) . "</b> " . $row2->nm_cliente . "</li>";
            }
            
        } else {
            $free       = "s";
            $content    = "";
        }
        
        $return = array(
            "free" => $free,
            "url" => "#close",
            "content" => $content
        );
        
        echo json_encode($return);
        
    }
    
}
?>
